﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;

namespace SistemaInventarioMVC.Models.Entidades
{
    [Table("Articulo")]
    public class Articulo
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Int32 ArticuloID { get; set; }

        [Column]
        [StringLength(50)]
        public String Nombre { get; set; }

        [Column(TypeName="nvarchar(max)")]
        [DisplayFormat(NullDisplayText="No existe descripcion", ApplyFormatInEditMode=true)]
        public String Descripcion { get; set; }

        [Column(TypeName="money")]
        [Display(Name="Costo")]
        public Decimal Costo { get; set; }

        [Column(TypeName="money")]
        [Display(Name="Precio unidad")]
        public Decimal PrecioUnidad { get; set; }

        [Column]
        [Display(Name="Fecha de registro")]
        public DateTime FechaRegistro { get; set; }

        [Column]
        [Display(Name="Fecha de vencimiento")]
        public DateTime FechaVencimiento { get; set; }

        [Column]
        [Display(Name="Existencia")]
        public Int32 Existencia { get; set; }

        [Column]
        public String Url { get; set; }


        //Foreign keys
        [Column]
        public Int32 AlmacenID { get; set; }

        [Column]
        public Int32 FamiliaID { get; set; }

        [Column]
        public Int32 InventarioID { get; set; }

        [Column]
        public Int32 MarcaID { get; set; }

        [Column]
        public Int32 TipoProductoID { get; set; }

        [Column]
        public Int32 UnidadMedidaID { get; set; }

        [Column]
        public Int32 UbicacionID { get; set; }

        //Propiedad de navegacion
        [ForeignKey("AlmacenID")]
        public virtual Almacen Almacen { get; set; }

        [ForeignKey("FamiliaID")]
        public virtual Familia Familia { get; set; }

        [ForeignKey("InventarioID")]
        public virtual Inventario Inventario { get; set; }

        [ForeignKey("MarcaID")]
        public virtual Marca Marca { get; set; }

        [ForeignKey("TipoProductoID")]
        public virtual TipoProducto TipoProducto { get; set; }

        [ForeignKey("UnidadMedidaID")]
        public virtual UnidadMedida UnidadMedida { get; set; }

        [ForeignKey("UbicacionID")]
        public Ubicacion Ubicacion { get; set; }

        public virtual ICollection<DetalleEntradaAlmacen> DetalleEntradasAlmacenes { get; set; }
        public virtual ICollection<DetalleSalidaAlmancen> DetalleSalidasAlmacen { get; set; }
    }
}